package com.company.app.utils;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import com.company.app.services.DeletePhotoHandler;

public class CommonKits {
    public String[] convertFileList2StrArr(List<File> fileList) {
        // 使用 stream API 将 List<File> 转换为 List<String>
        List<String> stringList = fileList.stream()
                .map(File::getAbsolutePath)
                .collect(Collectors.toList());

        // 将 List<String> 转换为 String[]
        return stringList.toArray(new String[0]);
    }

    /**
     * 如果字符串参数为空或仅包含空格,返回true
     * 
     * @param str
     * @return
     */
    public boolean isBlankOrEmpty(String str) {
        return str == null || str.trim().isEmpty();
    }

    /**
     * 
     * @param imgFiles
     * @param destFileList
     */
    public void moveFilesByLists(List<File> imgFiles, List<File> destFileList) {
        if (imgFiles.size() == 0 || destFileList.size() == 0) {
            System.out.println(this + " Lists sizes is zero.");
        } else {
            DeletePhotoHandler del = new DeletePhotoHandler();
            // 确保两个列表长度相同
            if (imgFiles.size() == destFileList.size()) {
                IntStream.range(0, imgFiles.size())
                        .parallel()
                        .forEach(i -> {
                            File imgFile = imgFiles.get(i);
                            File destFile = destFileList.get(i);
                            try {
                                del.moveImageFile(imgFile, destFile);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        });
            } else {
                System.out.println("Lists have different sizes.");
            }
        }
    }

    /**
     * 获取文件的后缀名。
     *
     * @param fileAbsolutePath 文件的绝对路径
     * @return 文件的后缀名，如果没有后缀名则返回 null
     */
    public String getFileExtension(String fileAbsolutePath) {
        // 检查文件路径是否为空或非法
        if (fileAbsolutePath == null || fileAbsolutePath.isEmpty()) {
            return null;
        }

        // 查找文件路径中最后一个点的位置
        int lastIndexOfDot = fileAbsolutePath.lastIndexOf(".");

        // 检查点是否在文件名的开始或不存在
        if (lastIndexOfDot == -1 || lastIndexOfDot == fileAbsolutePath.length() - 1) {
            return null;
        }

        // 获取并返回后缀名(小写)
        String extensionName = fileAbsolutePath.substring(lastIndexOfDot + 1);
        return extensionName.toLowerCase();
    }
}
